package com.plian.system.entity.im;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.plian.Tools.DateUtil;
import com.plian.system.mybatis.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * @description: 项目基本信息
 * @author: gangan
 * @create: 2020-04-23 13:46
 */
@Data
@TableName("im_project_info")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "项目信息", description = "项目信息")
public class ProjectInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    // todo
    @ApiModelProperty(value = "项目状态：1续建 2新建  3已完工", required = true)
    private Integer projectStatus;


    @ApiModelProperty(value = "项目名称", required = true)
    private String projectName;

    @ApiModelProperty(value = "投资企业", required = true)
    private String investmentCompanyId;

    @ApiModelProperty(value = "投资企业层级")
    private String investmentCompanyRankId;

    // todo
    @ApiModelProperty(value = "所属集团")
    private String subordinateGroupId;

    // todo
    @ApiModelProperty(value = "入库日期 - yyyy-MM-dd")
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
    @JsonFormat(pattern = DateUtil.PATTERN_DATE)
    private Date warehousingDate;

    // todo
    @ApiModelProperty(value = "上报单位", required = true)
    private String fillingUnitId;

    @ApiModelProperty(value = "投资性质 1股权投资，2固定资产投资,3无形资产投资,4金融投资", required = true)
    private Integer investmentCategory;

    // todo
    @ApiModelProperty(value = "是否民生项目/是否基金投资：1否2是", required = true)
    private Integer isImportant;

    @ApiModelProperty(value = "项目类别：字典取值", required = true)
    private String projectNatureId;

    @ApiModelProperty(value = "项目属性 1自营项目（主业项目)、2自营项目（培育业务项目）、3自营项目（非主业项目）、4政府性项目", required = true)
    private Integer projectCategory;

    // todo
    @ApiModelProperty(value =" 是否列入年度投资计划项目：1否2是", required = true)
    private Integer isPlan;

    @ApiModelProperty(value = "是否是负面清单项目 1否2是", required = true)
    private Integer isNegativeProject;

    // todo
    @ApiModelProperty(value = "负面清单类型：1监管类 2禁止类", required = true)
    @TableField(value = "negative_type",updateStrategy = FieldStrategy.IGNORED)
    private Integer negativeType;

    // todo
    @ApiModelProperty(value = "是否战略新兴产业：1否2是", required = true)
    private Integer isStrategic;

    // todo
    @ApiModelProperty(value = "投资属性：1主业  2非主业", required = true)
    private Integer investmentAttribute;
    @ApiModelProperty(value = "选择投资属性为主业之后选择  投资属性主业详情主业：1核心主业 2培育主业", required = true)
    private Integer investmentAttributeItem;

    // todo
    @ApiModelProperty(value = "项目预计开始时间 - yyyy-MM-dd")
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
    @JsonFormat(pattern = DateUtil.PATTERN_DATE)
    private Date anticipateStartTime;

    // todo
    @ApiModelProperty(value = "投资地域：1境内 2境外", required = true)
    private Integer investmentRegion;

    // todo
    @ApiModelProperty(value = "是否邢台市域投资：1否2是", required = true)
    private Integer isLocal;


    // todo
    @ApiModelProperty(value = "详细地址", required = true)
    private String fullAddress;

    // todo
    @ApiModelProperty(value = "项目简介", required = true)
    private String projectIntroduction;

    // todo
    @ApiModelProperty(value = "项目地址-名称", required = true)
    private String projectAddr;

    // todo
    @ApiModelProperty(value = "项目地址-编码-省", required = true)
    private String provinceCode;

    // todo
    @ApiModelProperty(value = "项目地址-编码-市", required = true)
    private String cityCode;

    // todo
    @ApiModelProperty(value = "项目地址-编码-区", required = true)
    private String areaCode;

    // todo
    @ApiModelProperty(value = "项目总投资", required = true)
    private BigDecimal planInvestment;


    // todo
    @ApiModelProperty(value = "项目总投资 其中：自有资金", required = true)
    private BigDecimal companyPlanInvestment;

    // todo
    @ApiModelProperty(value = "项目预计收益率", required = true)
    private BigDecimal planReturnRate;

    // todo
    @ApiModelProperty(value = "是否与其他国资合作:1央企 2省企 3宁波市国企 4否", required = true)
    private String isCooperation;

    // todo
    @ApiModelProperty(value = "合作方名称", required = true)
    private String partner;

    // todo
    @ApiModelProperty(value = "投资资金来源:字典取值 147 ，逗号隔开", required = true)
    private String fundSource;

    // todo
    @ApiModelProperty(value = "其他基金名称", required = true)
    private String otherFundName;

    // todo
    @ApiModelProperty(value = "自有资金", required = true)
    private BigDecimal selfFund;

    // todo
    @ApiModelProperty(value = "贷款", required = true)
    private BigDecimal loanFund;

    // todo
    @ApiModelProperty(value = "其他", required = true)
    private BigDecimal otherFund;

    // todo
    @ApiModelProperty(value = "组合", required = true)
    private BigDecimal combinationFund;

    // todo
    @ApiModelProperty(value = "财政资金", required = true)
    private BigDecimal financialFund;

    @ApiModelProperty(value = "附件")
    @TableField(exist = false)
    private List<HashMap> docList;

    // todo
    @ApiModelProperty(value = "未来五年投资额", required = true)
    private BigDecimal fiveFund;

    // todo
    @ApiModelProperty(value = "当年投资额", required = true)
    private BigDecimal currentFund;

    // todo
    @ApiModelProperty(value = "项目内容", required = true)
    private String projectContent;

    // todo
    @ApiModelProperty(value = "相关部门", required = true)
    private String relevantDepartment;
    /**
     * 资本金
     */
    @TableField(value = "capital",updateStrategy = FieldStrategy.IGNORED)
    @ApiModelProperty(value = "资本金")
    private BigDecimal capital;

    /**
     * 是否可用 1否2是
     */
    @ApiModelProperty(value = "是否可用 1否2是", required = true)
    private Integer isAvailable;


    /**
     * 排序号
     */
    @ApiModelProperty(value = "排序号", required = true)
    private String orderNumber;

    @ApiModelProperty(value = "审批人")
    private String approvedUser;
    /**
     * 审批时间
     */
    @ApiModelProperty(value = "审批时间")
    private Date approvedTime;

    /**
     * 数据来源 null为系统填报 对应用户id
     */
    @ApiModelProperty(value = "数据来源 null为系统填报 对应用户id")
    private String dataSource;

    /**
     * 数据来源id
     */
    @ApiModelProperty(value = "数据来源id", required = true)
    private String dataSourceId;

    @ApiModelProperty(value = "表单类型")
    private String formType;

    @ApiModelProperty(value = "计划完成时间 - yyyy-MM-dd")
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
    @JsonFormat(pattern = DateUtil.PATTERN_DATE)
    private Date planFinishDate;

    @ApiModelProperty(value = "项目类型  字典配置189", required = true)
    private String  projectType;



    @ApiModelProperty(value = "是否为按本企业投资管理制度确定的重大投资项目（1否，2是）")
    private Integer  isKeynoteProject;
    @ApiModelProperty(value = "是否为特别监管类项目投资1否，2是")
    private Integer  isSpecialSupervise;
    @ApiModelProperty(value = "是否属于战新及分类代码和名称（1：否，2：是）")
    private String  isZhanXin;
    @ApiModelProperty(value = "行业分类代码")
    private String  industryCode;
    @ApiModelProperty(value = "国民经济行业名称")
    private String  nationalEconomyName;
    @ApiModelProperty(value = "是否属于现代服务业及分类代码和名称")
    private String  isNowService;
    @ApiModelProperty(value = "是否主业投资（1否，2是）")
    private Integer  isMainBusiness;
    @ApiModelProperty(value = "主业名称")
    private String  mainBusinessName;
    @ApiModelProperty(value = "备注")
    private String  remarks;
    @ApiModelProperty(value = "本年度计划投资额")
    private BigDecimal  thisYearPlanAmount;
    @ApiModelProperty(value = "截止去年年底完成投资额")
    private BigDecimal  lastYearFinishAmount;
    @ApiModelProperty(value = "本年度计划投资，其中：自有资金")
    private BigDecimal  thisYearOwnAmount;
    @ApiModelProperty(value = "投资完成后所占股比")
    private BigDecimal  finishShare;
    @ApiModelProperty(value = "本年度计划投资，贷款")
    private BigDecimal  thisYearLoanAmount;
    @ApiModelProperty(value = "本年度计划投资，其它")
    private BigDecimal  thisYearOtherAmount;
    @ApiModelProperty(value = "项目总投资：贷款")
    private BigDecimal  investmentLoanAmount;
    @ApiModelProperty(value = "项目总投资：其他")
    private BigDecimal  investmentOtherAmount;
    @ApiModelProperty(value = "其他股东及占比情况")
    private BigDecimal  otherShareholderShare;
    @ApiModelProperty(value = "是否于去年一季度开工建设（1否，2是）")
    private Integer  isLastYearFirstQuarter;
    @ApiModelProperty(value = "是否是去年省重点建设项目（1否，2是）")
    private Integer  isLastProvinceKeynote;
    @ApiModelProperty(value = "是否是去年市重点建设项目（1否，2是）")
    private Integer  isLastCityKeynote;
    @ApiModelProperty(value = "是否属于技改项目（1否，2是）")
    private Integer  isTechnologyChange;
    @ApiModelProperty(value = "填写年度")
    private Integer lastYear;
    @ApiModelProperty(value = "编号")
    private String projectCode;

}
